package com.bobi.ecofavor.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bobi.ecofavor.model.dto.PageDTO;
import com.bobi.ecofavor.model.dto.StoreIdDTO;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.bobi.ecofavor.common.utils.JsonResponse;
import com.bobi.ecofavor.service.StoreService;
import com.bobi.ecofavor.model.domain.Store;

import java.io.Serializable;
import java.util.List;


/**
 * 前端控制器
 *
 * @author wenyuan
 * @version v1.0
 * @since 2023-10-21
 */
@RestController
@RequestMapping("/api/store")
public class StoreController {

//    private final Logger logger = LoggerFactory.getLogger( StoreController.class );

    @Autowired
    private StoreService storeService;

    //查询bobi_store中的部分数据
    @RequestMapping("/getStore")
    public JsonResponse getByStore(Store store){
        List<Store> store1 = storeService.getByStoreAll(store);
        return JsonResponse.success(store1);
    }

//    @RequestMapping("/getPageList")
//        private JsonResponse getStore(PageDTO pageDTO,Store store){
//        Page<Store> page = storeService.pageList(pageDTO,store);
//        return JsonResponse.success(page);
//    }


    //根据store的id 查询store中的信息  和所属商品信息
    @RequestMapping("/getStoreById")
    private JsonResponse getByStoreId(Integer id){
        Store store = storeService.getByStoreId(id);
        return JsonResponse.success(store);
    }

    //根据 userId从表store中得到部分数据
    @RequestMapping("/getStoreByUserId")
    private JsonResponse getStoreByUserId(Integer userId){
        List<Store> stores = storeService.getStoreByUserId(userId);
        return JsonResponse.success(stores);
    }

    //根据 storeIds 全部删除
    @RequestMapping("/removeAll")
    private JsonResponse removeAll(@RequestBody StoreIdDTO storeIdDTO){
        Boolean b = storeService.removeByIds(storeIdDTO.getStoreIds());
        return JsonResponse.success(b);
    }
    //    添加商户信息
    @RequestMapping("/insertOilStore")
    private JsonResponse removeAll(Store store){
       Integer list = storeService.insertOil(store);
        return JsonResponse.success(list);
    }

    /**
     * @apiNote 向用户展示商店信息
     * @param store 输入信息类为store,传输数据为用户经度longitude，纬度latitude,商家类型storeCategory
     *              默认以距离降序排序，加入score=1可以score升序distance降序排列
     * @return 距离50km以内，并且最多只有50条数据
     */
    @GetMapping("/getNearStore")
    private JsonResponse getUserNearStore( Store store){
        List<Store> stores = storeService.selectStoreByType(store);
        return JsonResponse.success(stores);
    }

    // 拿到 全部距离
    @RequestMapping("/getDistance")
    private JsonResponse getDistance(@RequestBody Store store){
        List<Store> stores = storeService.getDistance(store);
        return JsonResponse.success(stores);
    }

    //根据 store_name从表store全部数据(搜索功能)
    @RequestMapping("/getStoreByStoreName")
    private JsonResponse getStoreByStoreName(Store storeName){
        List<Store> stores = storeService.getStoreByStoreName(storeName);
        return JsonResponse.success(stores);
    }
}

